
#include "register/tilingdata_base.h"

namespace optiling {
BEGIN_TILING_DATA_DEF(ScatterElementsTilingData)
  TILING_DATA_FIELD_DEF(uint32_t, smallCoreDataNum);
  TILING_DATA_FIELD_DEF(uint32_t, bigCoreDataNum);
  TILING_DATA_FIELD_DEF(uint32_t, finalBigTileNum);
  TILING_DATA_FIELD_DEF(uint32_t, finalSmallTileNum);
  TILING_DATA_FIELD_DEF(uint32_t, tileDataNum);
  TILING_DATA_FIELD_DEF(uint32_t, smallTailDataNum);
  TILING_DATA_FIELD_DEF(uint32_t, bigTailDataNum);
  TILING_DATA_FIELD_DEF(uint32_t, tailBlockNum);
  TILING_DATA_FIELD_DEF(int64_t, axis);
  TILING_DATA_FIELD_DEF(uint32_t, reduce);
  TILING_DATA_FIELD_DEF(uint32_t, indexLength); // 表示indicies数组的实际长度，用于循环遍历
  TILING_DATA_FIELD_DEF(uint32_t, indexLengthAligned); // 表示indicies数组的对齐长度，用于存储拷贝
  TILING_DATA_FIELD_DEF(uint32_t, unitCount);
  TILING_DATA_FIELD_DEF(uint32_t, totalLength);
  TILING_DATA_FIELD_DEF(uint32_t, stepSize);
  TILING_DATA_FIELD_DEF(uint32_t, firstDimSelf);
  TILING_DATA_FIELD_DEF(uint32_t, secondDimSelf);
  TILING_DATA_FIELD_DEF(uint32_t, thirdDimSelf);
  TILING_DATA_FIELD_DEF(uint32_t, dimSize); // 存储输入和输出的张量是几维度，如果是3维以上的，就无法处理
  TILING_DATA_FIELD_DEF(uint32_t, firstDimIndex);
  TILING_DATA_FIELD_DEF(uint32_t, secondDimIndex);
  TILING_DATA_FIELD_DEF(uint32_t, thirdDimIndex);
  TILING_DATA_FIELD_DEF(uint32_t, firstDimUpdates);
  TILING_DATA_FIELD_DEF(uint32_t, secondDimUpdates);
  TILING_DATA_FIELD_DEF(uint32_t, thirdDimUpdates);
  TILING_DATA_FIELD_DEF(uint32_t, updatesLength); // 表示indicies数组的实际长度，用于循环遍历
  TILING_DATA_FIELD_DEF(uint32_t, updatesLengthAligned); // 表示indicies数组的对齐长度，用于存储拷贝
  TILING_DATA_FIELD_DEF(uint32_t, indexTileNum);
  TILING_DATA_FIELD_DEF(uint32_t, indexTailDataNum);
  TILING_DATA_FIELD_DEF(uint32_t, updatesTileNum);
  TILING_DATA_FIELD_DEF(uint32_t, updatesTailDataNum);
END_TILING_DATA_DEF;

REGISTER_TILING_DATA_CLASS(ScatterElements, ScatterElementsTilingData)
}
